#ifndef _IOT_GPIO_H_
#define _IOT_GPIO_H_

#define IOT_GPIO_0    0 
#define IOT_GPIO_1    1 
#define IOT_GPIO_2    2 
#define IOT_GPIO_3    3  
#define IOT_GPIO_4    4 
#define IOT_GPIO_5    5  
#define IOT_GPIO_6    6  
#define IOT_GPIO_7    7  
#define IOT_GPIO_8    8  
#define IOT_GPIO_9    9  
#define IOT_GPIO_10   10 
#define IOT_GPIO_11   11 
#define IOT_GPIO_12   12 
#define IOT_GPIO_13   13 
#define IOT_GPIO_14   14 
#define IOT_GPIO_15   15 
#define IOT_GPIO_16   16 
#define IOT_GPIO_17   17 
#define IOT_GPIO_18   18 
#define IOT_GPIO_19   19 
#define IOT_GPIO_20   20  
#define IOT_GPIO_21   21  
#define IOT_GPIO_22   22 
#define IOT_GPIO_23   23 
#define IOT_GPIO_24   24  
#define IOT_GPIO_25   25 
#define IOT_GPIO_26   26  
#define IOT_GPIO_27   27  
#define IOT_GPIO_28   28 
#define IOT_GPIO_29   29 
#define IOT_GPIO_30   30 
#define IOT_GPIO_31   31 
#define IOT_GPIO_32   32 
#define IOT_GPIO_33   33 
#define IOT_GPIO_34   34 
#define IOT_GPIO_35   35 
#define IOT_GPIO_36   36 
#define IOT_GPIO_37   37 
#define IOT_GPIO_38   38 
#define IOT_GPIO_39   39 
#define IOT_GPIO_40   40 
#define IOT_GPIO_41   41 
#define IOT_GPIO_42   42 
#define IOT_GPIO_43   43  
#define IOT_GPIO_44   44  
#define IOT_GPIO_45   45  
#define IOT_GPIO_46   46 
#define IOT_GPIO_47   47 
#define IOT_GPIO_48   48 
#define IOT_GPIO_49   49 
#define IOT_GPIO_50   50 
#define IOT_GPIO_51   51 
#define IOT_GPIO_52   52 
#define IOT_GPIO_53   53 
#define IOT_GPIO_54   54  
#define IOT_GPIO_55   55  
 
#define IOT_GPIO_MODE_GPIO   0
#define IOT_GPIO_MODE_INT  3

#define IOT_GPIO_DIR_INPUT 0
#define IOT_GPIO_DIR_OUTPUT 1

extern void iot_gpioModeConfigure(iot_uint8_t pin, iot_uint8_t pin_mode);
extern void  iot_gpioDirectionConfigure(iot_uint8_t pin, iot_uint8_t direction);
extern void iot_gpioPullEnable(iot_uint8_t pin, iot_uint8_t pull_en);
extern void iot_gpioPullSelect(iot_uint8_t pin,iot_uint8_t pull_up);
extern void iot_gpioWrite(iot_uint8_t pin,iot_uint8_t data);
extern iot_uint8_t iot_gpioRead(iot_uint8_t pin);

#endif
